# 数据分析层
import json
from pandasService.pandasService import pandasService


class dataService:
    def __init__(self):
        pass

    # 分析相关数据de原始数据并解析成需要的数据格式
    @staticmethod
    def parserDataForCommon(json_data, filename):
        # 提取数据
        data = json_data['returndata']
        # 提取城市编号数据
        code_data = data['wdnodes'][1]['nodes']

        # 数据格式
        '''
        {
            "上海市": "310000",
            "云南省": "530000",
            "内蒙古自治区": "150000",
            "北京市": "110000"
        }
        '''
        code_for_city = {}  # 城市编号和名称的对应关系
        common_for_city = {}  # 城市的 指定数据
        '''
           {
                城市名：[
                            {
                                2023:123.00
                            },
                            {
                                2022:123.00
                            }
                        ],
                城市名：[
                        
                       ]
           } 
        '''
        # 提取城市和编号的对应关系
        for nodes in code_data:  # 去掉第一个表头数据
            code_for_city[nodes['cname']] = nodes['code']

        # 获取GDP数据节点
        # 数据格式
        '''
            [
                {},
                {},
            ]
            前十个花括号是北京近十年的 指定数据 往后十个花括号是另一个的
        '''
        datanodes = data['datanodes']
        # 遍历所有元素 获得各个地区近 10 年的 相关数据
        index = 0  # 每 10 条数据为一组
        city_array = []
        city_name = ''
        for data in datanodes:

            # 获取数据城市代码
            city_code = data['wds'][1]['valuecode']
            # 获取城市名称
            for city, code in code_for_city.items():
                if code == city_code:
                    city_name = city

            # 获取数据的年份
            year = data['wds'][2]['valuecode']
            # 获取 gdp 数据
            common_data = data['data']['strdata']
            year_gdp = {year: common_data}
            if common_data != '':
                city_array.append(year_gdp)  # 2023年没有数据 直接刨去

            index += 1

            if index == 10:
                common_for_city[city_name] = list(reversed(city_array))
                city_array = []
                index = 0

        # 调用Pandas对数据进行处理
        l = pandasService.parserDataForCommonToDataFrame(common_for_city, filename)
        return l
